package code.starivan.niuke.jianoffer;

import java.util.ArrayList;
import java.util.LinkedList;

/**
 * Created by Ivan on 2015/8/26.
 */


/*
��Ŀ����

        ���ϵ��°����ӡ��������ͬһ����������������ÿһ�����һ�С�
*/

public class PrintBT2 {
    public ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
        ArrayList<ArrayList<Integer>> list=new ArrayList<>();
        if(pRoot==null){
            return list;
        }

        LinkedList<TreeNode> nodes=new LinkedList<>();
        nodes.addLast(pRoot);
        int next=0;
        int print=1;
        while (nodes.size()>0){
            ArrayList<Integer> tmp=new ArrayList<>();
            while (print>0){
                TreeNode node=nodes.pollFirst();
                tmp.add(node.val);

                if(node.left!=null){
                    nodes.addLast(node.left);
                    ++next;
                }
                if(node.right!=null){
                    nodes.addLast(node.right);
                    ++next;
                }
                --print;
            }

            list.add(tmp);
            print=next;
            next=0;
        }

        return list;
    }
}
